docs: add docs.page validation gate and newcomer onboarding#8
Conversation
Bootstrap docs.json and a published landing page, wire pnpm docs:check into CI and Steward, fix in-site links, and clarify repo purpose for newcomers and agents. Co-authored-by: Cursor <cursoragent@cursor.com>
|
To preview the documentation for this pull request, visit the following URL: docs.page/arenukvern/intentcall~8
|
|
Warning Review limit reached
More reviews will be available in 46 minutes and 56 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (16)
📝 WalkthroughWalkthroughAdds docs.page configuration and validation wiring, then updates docs navigation and link targets. The PR also expands registry-entry-based publishing and invocation flow, adds Apple native queue and Xcode sync support, and updates 0.2.x release/version validation across packages. ChangesDocs site publishing and validation
Registry, invocation, and platform runtime
Release train and validation
Estimated code review effort🎯 5 (Critical) | ⏱️ ~120 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/ci.yml:
- Around line 20-26: The CI workflow currently uses floating action tags for
actions/setup-node and pnpm/action-setup, so update the jobs in the workflow to
reference immutable commit SHAs instead of `@v4`. Keep the existing setup-node and
pnpm/action-setup steps, but pin each action to a reviewed full-length SHA to
prevent unreviewed changes from entering the pipeline.
In `@steward.yaml`:
- Around line 140-145: The intentcall.docs-check read set is incomplete because
the docs-check path also reads the installed CLI under node_modules when just
docs-check resolves through justfile to pnpm run docs:check and package.json
invokes `@docs.page/cli`. Update the fs_read list in steward.yaml to include the
relevant node_modules/** install path used by the docs CLI, alongside the
existing docs-related entries, so the action effect manifest fully reflects all
filesystem reads.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 4f90e77a-7f0a-4d2d-a7df-9638d237c760
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (20)
.github/workflows/ci.yml.gitignoreAGENTS.mdCONTRIBUTING.mdREADME.mddocs.jsondocs/DESIGN_FAQ.mdxdocs/DX_FAQ.mdxdocs/NORTH_STAR.mdxdocs/contributing/enable_docs_page.mdxdocs/decisions/0010-adopt-intentcall-product-name.mddocs/decisions/0011-agent-skills-discoverability-for-intentcall.mddocs/decisions/0012-adopt-platform-support-tiers.mddocs/decisions/0013-delete-implemented-plans-after-durable-extraction.mddocs/decisions/0014-own-runtime-sessions-in-intentcall.mddocs/index.mdxdocs/start_here/docs_map.mdxjustfilepackage.jsonsteward.yaml
There was a problem hiding this comment.
Actionable comments posted: 7
🧹 Nitpick comments (2)
packages/intentcall_platform/lib/src/emitters/apple_swift_app_intents_emitter.dart (1)
188-203: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low value
_swiftIdentifiercan emit Swift reserved words, producing uncompilable code.A schema field named e.g.
class,default,return, orfuncsanitizes to that exact word, generatingvar default: Bool?, which is invalid Swift. Consider escaping collisions (backticks) or suffixing reserved identifiers.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/intentcall_platform/lib/src/emitters/apple_swift_app_intents_emitter.dart` around lines 188 - 203, The _swiftIdentifier helper can still return Swift reserved words, which leads to invalid declarations in AppleAppIntentsEmitter output. Update _swiftIdentifier to detect collisions with Swift keywords after sanitization and transform them safely, either by escaping the identifier with backticks or by appending a stable suffix. Keep the behavior localized to the _swiftIdentifier path so all generated field/property names from AppleSwiftAppIntentsEmitter remain compilable.packages/intentcall_platform/lib/src/sync/apple_xcode_project_sync.dart (1)
92-102: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low valueSubstring filename match in
_removeGeneratedReferencescan over-match for short custom names.
RegExp(escaped).hasMatch(line)matches the bare filename anywhere on a line. For the defaultIntentCallGenerated.swiftthis is specific enough, but a short customgeneratedFileNamethat is a substring of another source file's name/path could strip unrelatedPBXFileReference/PBXBuildFilelines. Consider anchoring to the structured tokens (e.g.path = .../<name>;and/* <name> ... */) rather than a bare substring.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/intentcall_platform/lib/src/sync/apple_xcode_project_sync.dart` around lines 92 - 102, The `_removeGeneratedReferences` filter is too broad because `RegExp(escaped).hasMatch(line)` removes any line containing a matching filename substring. Update the logic in `apple_xcode_project_sync.dart` to match only the structured Xcode reference forms for `generatedFileName` and `staleGeneratedFileNames` (for example, `PBXFileReference`/`PBXBuildFile` tokens that include the exact name in `path = ...` or `/* ... */`), so short custom names do not strip unrelated lines.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/intentcall_codegen/lib/src/generators/agent_tool_generator.dart`:
- Around line 137-148: The named-argument handling in _buildHandlerArgs is still
using param.isRequiredNamed instead of the resolved required state from
_buildInputSchema. Update the inclusion logic in AgentToolGenerator so both
schema generation and handler argument emission rely on the same resolved
isRequired value derived from `@AgentParam`(required:), and only emit the
conditional args.containsKey path for optional named params while keeping truly
required named params unconditional.
In `@packages/intentcall_platform/ios/Classes/IntentCallPlatformPlugin.swift`:
- Around line 19-28: The pending-invocations drain in
IntentCallPlatformPlugin.handle is doing a non-atomic read-then-clear, which can
lose entries if new invocations arrive between the array(forKey:) fetch and the
set([], forKey:) reset. Fix this by making the take operation atomic with the
native append path for Self.pendingKey, such as serializing both operations on
the same queue or protecting them with a shared lock so takePendingInvocations
returns and clears only a consistent snapshot.
In `@packages/intentcall_platform/lib/src/bootstrap/agent_web_mcp_bootstrap.dart`:
- Around line 13-17: The default policy in registerAgentWebMcpFromRegistry
currently allows all access, which makes the web MCP helper too permissive by
default. Update this helper to default to
IntentCallAuthorizationPolicy.denyAll() to match
IntentCallNativeBridge.bindRegistry(), and keep policy overrides available so
callers can explicitly opt into broader access when needed.
In
`@packages/intentcall_platform/lib/src/emitters/apple_swift_app_intents_emitter.dart`:
- Around line 146-149: The `_swiftParameters` filtering in
`apple_swift_app_intents_emitter.dart` is dropping object and array schema
fields because `_swiftTypeFor` returns null for them, so they never reach
`arguments`. Update `_swiftParameters` (and related handling in
`AppleSwiftAppIntentsEmitter`) to either explicitly reject unsupported
object/array parameters with a clear error or encode/serialize them before
adding them to the arguments list, especially for required schema fields.
- Around line 82-97: The enqueue path in AppleSwiftAppIntentsEmitter performs an
unsynchronized read-modify-write on UserDefaults.standard, so update the enqueue
method to serialize the append/save section with a lock or dedicated serial
queue to prevent lost pending items under concurrent invocations. Also harden
_swiftIdentifier so it never returns raw Swift keywords such as class or struct;
backtick-escape reserved words or map them to a safe fallback identifier before
emitting generated Swift.
In `@packages/intentcall_platform/lib/src/emitters/web_mcp_js_emitter.dart`:
- Around line 18-23: The remaining WebMcpJsEmitter caller still uses invokePath
semantics, but WebMcpJsEmitter now defaults fallbackPolicy to disabled. Update
the affected test/setup to pass fallbackPolicy:
WebMcpFallbackPolicy.enabled(...) instead of invokePath so the emitter
explicitly opts into fetch fallback; use WebMcpJsEmitter and
WebMcpFallbackPolicy as the key symbols when locating the call site.
In `@skills/write-adapter/SKILL.md`:
- Around line 52-59: The example in the write-adapter skill uses an invalid
AgentRegistryEntry constructor argument, which would not compile. Update the
snippet that calls _publishIntent so it constructs AgentRegistryEntry with only
the supported key and intent fields, and remove the descriptor:
intent.descriptor line since descriptor is a derived getter on
AgentRegistryEntry.
---
Nitpick comments:
In
`@packages/intentcall_platform/lib/src/emitters/apple_swift_app_intents_emitter.dart`:
- Around line 188-203: The _swiftIdentifier helper can still return Swift
reserved words, which leads to invalid declarations in AppleAppIntentsEmitter
output. Update _swiftIdentifier to detect collisions with Swift keywords after
sanitization and transform them safely, either by escaping the identifier with
backticks or by appending a stable suffix. Keep the behavior localized to the
_swiftIdentifier path so all generated field/property names from
AppleSwiftAppIntentsEmitter remain compilable.
In `@packages/intentcall_platform/lib/src/sync/apple_xcode_project_sync.dart`:
- Around line 92-102: The `_removeGeneratedReferences` filter is too broad
because `RegExp(escaped).hasMatch(line)` removes any line containing a matching
filename substring. Update the logic in `apple_xcode_project_sync.dart` to match
only the structured Xcode reference forms for `generatedFileName` and
`staleGeneratedFileNames` (for example, `PBXFileReference`/`PBXBuildFile` tokens
that include the exact name in `path = ...` or `/* ... */`), so short custom
names do not strip unrelated lines.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 6f095dfb-e969-4b7c-a6b4-9617f594b8e6
📒 Files selected for processing (75)
.github/workflows/pub_publish.ymlCONTRIBUTING.mdPRE_RELEASE.mdPUBLISHING.mdREADME.mddocs/DESIGN_FAQ.mdxdocs/DX_FAQ.mdxdocs/NORTH_STAR.mdxdocs/decisions/0012-adopt-platform-support-tiers.mddocs/decisions/0015-dart-first-native-bridge.mddocs/decisions/README.mdpackages/intentcall_android/README.mdpackages/intentcall_android/pubspec.yamlpackages/intentcall_apple/README.mdpackages/intentcall_apple/pubspec.yamlpackages/intentcall_codegen/README.mdpackages/intentcall_codegen/example/demo_ping_tool.dartpackages/intentcall_codegen/example/demo_ping_tool.g.dartpackages/intentcall_codegen/lib/src/generators/agent_tool_generator.dartpackages/intentcall_codegen/pubspec.yamlpackages/intentcall_codegen/test/agent_tool_generator_test.dartpackages/intentcall_core/README.mdpackages/intentcall_core/lib/src/registry/agent_registry.dartpackages/intentcall_core/lib/src/registry/in_memory_agent_registry.dartpackages/intentcall_core/pubspec.yamlpackages/intentcall_core/test/in_memory_agent_registry_test.dartpackages/intentcall_gemma/README.mdpackages/intentcall_gemma/lib/src/gemma_publish_adapter.dartpackages/intentcall_gemma/pubspec.yamlpackages/intentcall_gemma/test/gemma_publish_adapter_test.dartpackages/intentcall_mcp/README.mdpackages/intentcall_mcp/lib/src/mcp_publish_adapter.dartpackages/intentcall_mcp/pubspec.yamlpackages/intentcall_mcp/test/mcp_publish_adapter_test.dartpackages/intentcall_platform/README.mdpackages/intentcall_platform/ios/Classes/IntentCallPlatformPlugin.swiftpackages/intentcall_platform/ios/intentcall_platform.podspecpackages/intentcall_platform/lib/intentcall_platform.dartpackages/intentcall_platform/lib/intentcall_platform_flutter.dartpackages/intentcall_platform/lib/src/bootstrap/agent_web_mcp_bootstrap.dartpackages/intentcall_platform/lib/src/bootstrap/agent_web_mcp_bootstrap_stub.dartpackages/intentcall_platform/lib/src/bootstrap/agent_web_mcp_bootstrap_web.dartpackages/intentcall_platform/lib/src/emitters/apple_swift_app_intents_emitter.dartpackages/intentcall_platform/lib/src/emitters/web_mcp_js_emitter.dartpackages/intentcall_platform/lib/src/flutter/intentcall_pending_invocations.dartpackages/intentcall_platform/lib/src/invocation/intentcall_invocation.dartpackages/intentcall_platform/lib/src/sync/apple_xcode_project_sync.dartpackages/intentcall_platform/lib/src/sync/platform_sync.dartpackages/intentcall_platform/lib/src/templates/platform_hook_templates.dartpackages/intentcall_platform/macos/Classes/IntentCallPlatformPlugin.swiftpackages/intentcall_platform/macos/intentcall_platform.podspecpackages/intentcall_platform/pubspec.yamlpackages/intentcall_platform/test/agent_web_mcp_bootstrap_test.dartpackages/intentcall_platform/test/apple_xcode_project_sync_test.dartpackages/intentcall_platform/test/intentcall_invocation_test.dartpackages/intentcall_platform/test/native_emitters_test.dartpackages/intentcall_platform/test/native_platform_sync_test.dartpackages/intentcall_platform/test/web_emitters_test.dartpackages/intentcall_schema/README.mdpackages/intentcall_schema/lib/src/agent_result_envelope.dartpackages/intentcall_session/README.mdpackages/intentcall_session/pubspec.yamlpackages/intentcall_testing/README.mdpackages/intentcall_testing/lib/src/adapter_contract.dartpackages/intentcall_testing/pubspec.yamlpackages/intentcall_testing/test/adapter_contract_test.dartpackages/intentcall_webmcp/README.mdpackages/intentcall_webmcp/lib/src/webmcp_publish_adapter.dartpackages/intentcall_webmcp/pubspec.yamlpackages/intentcall_webmcp/test/webmcp_publish_adapter_test.dartskills/register-intents/SKILL.mdskills/write-adapter/SKILL.mdsteward.yamltool/intentcall/bin/intentcall.darttool/intentcall/test/publish_preflight_test.dart
✅ Files skipped from review due to trivial changes (23)
- packages/intentcall_webmcp/README.md
- PRE_RELEASE.md
- packages/intentcall_apple/pubspec.yaml
- .github/workflows/pub_publish.yml
- packages/intentcall_webmcp/pubspec.yaml
- packages/intentcall_mcp/README.md
- packages/intentcall_gemma/README.md
- packages/intentcall_core/README.md
- packages/intentcall_testing/README.md
- packages/intentcall_platform/macos/intentcall_platform.podspec
- packages/intentcall_platform/lib/intentcall_platform_flutter.dart
- packages/intentcall_session/README.md
- packages/intentcall_schema/README.md
- skills/register-intents/SKILL.md
- docs/decisions/0012-adopt-platform-support-tiers.md
- docs/decisions/README.md
- packages/intentcall_apple/README.md
- packages/intentcall_core/pubspec.yaml
- packages/intentcall_platform/lib/src/templates/platform_hook_templates.dart
- packages/intentcall_codegen/README.md
- docs/decisions/0015-dart-first-native-bridge.md
- CONTRIBUTING.md
- packages/intentcall_platform/README.md
🚧 Files skipped from review as they are similar to previous changes (1)
- steward.yaml
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/intentcall_platform/README.md`:
- Around line 37-43: The README’s CI example references a nonexistent task, so
update the `make check-intentcall-integration` example to match an actual repo
entrypoint or add the missing task to the `justfile`. Locate the integration
docs around `flutter-mcp-toolkit codegen sync` and keep the `--check` guidance,
but make sure the command name is something users can actually run in this
repository.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 82814657-ffc7-4e40-a5f8-59fca2ecc45a
📒 Files selected for processing (17)
docs/DX_FAQ.mdxdocs/decisions/0015-dart-first-native-bridge.mdjustfilepackages/intentcall_platform/README.mdpackages/intentcall_platform/lib/src/bootstrap/agent_web_mcp_bootstrap.dartpackages/intentcall_platform/lib/src/bootstrap/agent_web_mcp_bootstrap_stub.dartpackages/intentcall_platform/lib/src/bootstrap/agent_web_mcp_bootstrap_web.dartpackages/intentcall_platform/lib/src/invocation/intentcall_invocation.dartpackages/intentcall_platform/lib/src/sync/platform_sync.dartpackages/intentcall_platform/test/agent_web_mcp_bootstrap_test.dartpackages/intentcall_platform/test/intentcall_invocation_test.dartpackages/intentcall_platform/test/native_platform_sync_test.dartpackages/intentcall_platform/test/platform_sync_test.dartpackages/intentcall_platform/test/web_emitters_test.dartskills/write-adapter/SKILL.mdsteward.yamlsteward/scenarios/intentcall.adapter-contract.yaml
✅ Files skipped from review due to trivial changes (2)
- docs/DX_FAQ.mdx
- docs/decisions/0015-dart-first-native-bridge.md
🚧 Files skipped from review as they are similar to previous changes (6)
- packages/intentcall_platform/lib/src/bootstrap/agent_web_mcp_bootstrap_stub.dart
- packages/intentcall_platform/lib/src/invocation/intentcall_invocation.dart
- packages/intentcall_platform/test/agent_web_mcp_bootstrap_test.dart
- skills/write-adapter/SKILL.md
- packages/intentcall_platform/test/native_platform_sync_test.dart
- packages/intentcall_platform/lib/src/sync/platform_sync.dart
Bootstrap docs.json and a published landing page, wire pnpm docs:check into CI and Steward, fix in-site links, and clarify repo purpose for newcomers and agents.
Summary by CodeRabbit
New Features
docs-check, integrated into CI and contributor workflows.Documentation
Chores